package com.firesafe.common.interceptor;

import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

//拦截指定的请求路径，注册拦截器
//避免firesafe-user自己调用自己，所以其有自己的拦截器
@Configuration
public class InterceptorConfig extends WebMvcConfigurationSupport {
    @Override
    protected void addInterceptors(InterceptorRegistry registry){
        registry.addInterceptor(jwtInterceptor())  //配置jwt拦截器规则
                .addPathPatterns("/**")  //拦截所有的请求路径
                .excludePathPatterns("/login","/register");  //除了登录，注册请求
        super.addInterceptors(registry);
    }

    @Bean
    //可在配置文件中配置是否开启jwt拦截器
    //havingValue：它的值与配置文件的值对比，当两个值相同，类会被加载到spring的IOC容器中。
    //matchIfMissing：当配置文件中没有对应的配置时，是否加载该bean。
    @ConditionalOnProperty(name = "myInterceptor.enable", havingValue = "true", matchIfMissing = true)
    public JWTInterceptor jwtInterceptor(){
        return new JWTInterceptor();
    }
}
